// utils中新建js文件
// 用户关闭弹窗时，给用户推送订阅消息
let type = 1

export function subscribeMessage(code){
    // 获取下发权限，withSubscriptions获取用户是否打开订阅消息总开关。后面我们需要获取用户是否同意总是同意消息推送。所以这里要给它设置为true 。
    wx.getSetting({
        withSubscriptions: true, //这里设置为true,下面才会返回mainSwitch
        success: function (res) {
            // 调起授权界面弹窗
            if (res.subscriptionsSetting.mainSwitch) { //用户打开了订阅消息总开关
                if (wx.requestSubscribeMessage) {
                    return new Promise((resolve, reject) => {
                        wx.requestSubscribeMessage({
                            tmplIds: code,
                            success: res => {
                                let {
                                    errMsg,
                                    ...data
                                } = res;
                                let Array = Object.entries(data)
                                let accept = Array.filter(e => e[1] == 'accept').map(item => item[0])
                                let reject = Array.filter(e => e[1] == 'reject').map(item => item[0])
                                let ban = Array.filter(e => e[1] == 'ban').map(item => item[0])
                                if (!accept.length && reject.length) { //全部拒绝
                                    console.log('你取消了订阅消息授权，将不会收到通知');
                                    wx.showToast({
                                        title: '你取消了订阅消息授权，将不会收到通知',
                                        icon: 'none',
                                        duration: 2000
                                    })
                                    type = 0
                                } else {
                                    console.log('订阅成功');
                                    console.log(code);
                                    wx.showToast({
                                        title: '订阅消息成功',
                                        icon: 'none',
                                        duration: 2000
                                    })
                                    type = 1
                                }
                                resolve({
                                    accept,
                                    reject,
                                    ban,
                                })
                            },
                            fail: err => {
                                wx.showToast({
                                    title: '订阅消息失败',
                                    icon: 'none',
                                    duration: 2000
                                })
                                reject(err)
                            }
                        })
                    })
                } else {
                    wx.showModal({
                        title: '提示',
                        content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试'
                    })
                }
            } else {
                wx.showModal({
                    title: '提示',
                    content: '请先开启订阅消息，以便及时获取最新消息。',
                    confirmText: '去设置',
                    success: res => {
                        if (res.confirm) {
                            wx.openSetting()
                        }
                    }
                })
            }
        }
    })
}
export const subscribeType = () => {
    return type
}

// js文件调用方法，记得一定要引入刚刚的js文件噢
//subscription.subscribeMessage([消息模板1,消息模板2])
